package org.zjt.chapter1.channel.handler;

import io.netty.channel.ChannelPipeline;
import io.netty.channel.DefaultChannelPipeline;
import org.junit.Test;

/**
 * Description:
 *
 *      ChannelPipeline :
 *
 *      handler 为 filter，pipeline 为 filterChain。pipeline 为handler 的广播器。
 *
 *          1、channel handler 的管理、配置
 *          2、channel handler 的事件通知
 *          3、channel、channelPipeline write:    无论在哪里，即使在channelHandler中，都是从整个pipeline 都开始流过handler。
 *          4、ChannelHandlerContext write： 是从下一个handler开始流转。
 *
 *
 * @author juntao.zhang
 * Date: 2018-07-11 下午8:20
 * @see
 */
public class ChannelPipelineOperator {

    @Test
    public void main() {
        ChannelPipeline channelPipeline = null;

        channelPipeline.fireChannelActive();
        channelPipeline.fireChannelInactive();

        // 调用channel handler中的fireUserEventTriggered 事件
        channelPipeline.fireUserEventTriggered(new Object());

        channelPipeline.fireChannelRead(new Object());

        // 出站事件handler
        channelPipeline.disconnect();

        // channel、channelPipeline write: 无论在哪里，即使在channelHandler中，都是从整个pipeline 都开始流过handler。
        channelPipeline.write(new Object());
        channelPipeline.channel().write(new Object());

    }
}
